/**
 * Pessoa.java
 * 
 * Projeto: SGA-LEDS
 * 
 * Rodrigo Soares Maia
 * IFES - Instituto Federal do Espírito Santo - Campus Serra
 */

package utilitario.utilitarioPessoa.cdp;

import java.util.Calendar;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import utilitario.utilitarioPersistencia.cdp.ObjetoPersistente;

@Entity
@Inheritance(strategy= InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipopessoa")
public abstract class Pessoa extends ObjetoPersistente
{
    private String nome;
    private String eMail;
    //protected List<Telefone> telefone;
    protected String telefone;
    protected Calendar dataNascimento;
    protected String cpf;
    protected String identidade;
    protected Sexo sexo;
    protected Endereco endereco;
    protected byte[] foto;

    public String getNome()
    {
        return nome;
    }

    public void setNome(String nome)
    {
        this.nome = nome;
    }

    public String geteMail()
    {
        return eMail;
    }

    public void seteMail(String eMail)
    {
        this.eMail = eMail;
    }

//    @ManyToMany(cascade= CascadeType.PERSIST, fetch= FetchType.EAGER)
//    @JoinTable(name = "PessoaTelefone",
//    joinColumns = {
//        @JoinColumn(nullable=true)},
//    inverseJoinColumns = {
//        @JoinColumn(nullable=true)})
//    public List<Telefone> getTelefone()
//    {
//        return telefone;
//    }
//
//    public void setTelefone(List<Telefone> telefone)
//    {
//        this.telefone = telefone;
//    }
    
    public String getTelefone()
    {
        return telefone;
    }

    public void setTelefone(String telefone)
    {
        this.telefone = telefone;
    }

    @Temporal(javax.persistence.TemporalType.DATE)
    public Calendar getDataNascimento()
    {
        return dataNascimento;
    }

    public void setDataNascimento(Calendar dataNascimento)
    {
        this.dataNascimento = dataNascimento;
    }

    public String getCpf()
    {
        return cpf;
    }

    public void setCpf(String cpf)
    {
        this.cpf = cpf;
    }

    public String getIdentidade()
    {
        return identidade;
    }

    public void setIdentidade(String identidade)
    {
        this.identidade = identidade;
    }

    @Enumerated(EnumType.STRING)
    public Sexo getSexo()
    {
        return sexo;
    }

    public void setSexo(Sexo sexo)
    {
        this.sexo = sexo;
    }

    @OneToOne(cascade= CascadeType.PERSIST)
    public Endereco getEndereco()
    {
        return endereco;
    }

    public void setEndereco(Endereco endereco)
    {
        this.endereco = endereco;
    }

    public byte[] getFoto()
    {
        return foto;
    }

    public void setFoto(byte[] foto)
    {
        this.foto = foto;
    }
}
